using System;
using System.Collections.Generic;
using System.Text;

namespace Mx.Ipn.Escom.TT20080015.Modelo.Memoria
{
    [Serializable]
    public abstract class Memory
    {
        protected List<List<byte>> ma;
        protected int xSize, ySize;
        public virtual void Learn(List<Asociacion> asociacion)
        {
            foreach (Asociacion a in asociacion)
                Learn(a);
        }
        public virtual void Learn(Asociacion a) { }
        public virtual List<byte> Output(Asociacion xp) { return null; }
        protected static List<byte> MatrixperVector(List<List<byte>> matrix, List<byte> vector)
        {
            List<byte> result = new List<byte>();
            int aux;
            foreach (List<byte> m in matrix)
            {
                aux = 0;
                for (int i = 0; i < vector.Count; ++i)
                    aux += m[i] * vector[i];
                result.Add((byte)aux);
            }
            return result;
        }
        protected static List<List<byte>> VectorperVector(List<byte> y, List<byte> x)
        {
            List<List<byte>> result = new List<List<byte>>();
            List<byte> temp;
            foreach (int yi in y)
            {
                temp = new List<byte>();
                foreach (int xi in x)
                    temp.Add((byte)(yi * xi));
                result.Add(temp);
            }
            return result;
        }
    }
}
